package com.fdq.dianping.interceptor;

import com.fdq.dianping.util.ThreadLocalUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;

import java.util.Map;

//检测用户是否登录
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        //1.获取session中的用户
//        HttpSession session = request.getSession();
//        Object user = session.getAttribute(Constants.User);
//        //如果session中没有用户的信息（可能是过期或者没登录）就拦截
//        if(user == null){
//            //无权限
//            response.setStatus(401);
//            return false;
//        }
//        //有用户信息就保存到ThreadLocal中，（这样以后取用户信息就不用在session中取了？）
//        //将用户信息部分存入
//        ThreadLocalUtil.set(BeanUtil.copyProperties(user, UserDto.class));
//        return true;

        //获取当前登录用户信息
        Map<String,Object> userMap = ThreadLocalUtil.get();
        if(userMap==null){
            response.setStatus(401);
            return false;
        }else {
            //1.获取session中的用户
            HttpSession session = request.getSession();
            /**
             *将用户的id保存到session中，用于webSocket通信
             */
            session.setAttribute("userId",userMap.get("id"));
            return true;
        }

    }


}
